נניח שאני רוצה שכשנכנסים לדף מסוים בלי GET בשם action, יהיה שם GET בשם action עם הערך index.
אם יש action, אני רוצה לעשות פעולות אחרות לפי הערך שלו, ואם אני לא מזהה את הערך שלו - לזרוק לו 404.
איך לעשות את זה? להכניס את כל הדף ללולאת switch או לתנאי elseif?

3 תשובות

avatar ענה intval ב 11 לאוגוסט 2012 #

אין הבדל בין switch להרבה elseif והפתרון הזה בסדר גמור. תעשה מה שיותר נוח לך.
בתור שדרוג אתה יכול לעשות גם משהו כזה.

$allowedActions = ['index', 'about', 'contact'];
if(isset($_GET['action']))
{
  if (in_array($_GET['action'], $allowedActions))
    include 'pages/'.$_GET['action'].'.php';
  else include 'pages/404.php';
}
else include 'pages/index.php';

avatar ענה intval ב 11 לאוגוסט 2012 #

בדיוק היום פורסם מדריך מגניב של פול שמסביר בערך איך פריימוורקים עושים ניתוב לבקשות.

avatar ענה OrelBeY ב 11 לאוגוסט 2012 #

אוקיי, תודה. :)
אני רק אוסיף strtolower().

$allowed_actions = ['index', 'about', 'contact'];
if(isset($_GET['action']))
{
  if (in_array(strtolower($_GET['action']), $allowed_actions))
    require_once 'pages/'.strtolower($_GET['action']).'.php';
  else require_once 'pages/404.php';
}
else require_once 'pages/index.php';